#ifndef mysql_execute__
#define mysql_execute__
 
#include "mysql_connect.h"
#include <sstream>
#ifndef LOGME
#undef  LOGME
#define LOGME(type,fmt,...){printf(" [%s] %s|%d \"fmt\"\n", #type,__FUNCTION__,__LINE__,__VA_ARGS__);}
#endif


class mysql_execute
{
public:
	mysql_execute();
	~mysql_execute();

	bool IsValid()
	{ 
		if (mysql_) return true;
		return false;
	}
	MYSQL_RES* query(const char* sqlStr);
	MYSQL_RES* query_more(const char* sqlStr);
	void free_result(MYSQL_RES* result);
	void free_result(MYSQL_RES* result, int m);
	int update(const char* sqlStr);
	int insert(const char* sqlStr);
	int insert_id(const char* sqlStr);
	int     Delete(const char* sqlStr);
	int     ExcuteProc(const char* sqlStr);
	int     ExcuteProc(const char* sqlStr,int &nReturn);
	int     ExcuteProc2(const char* sqlStr,int nReturn[]);
	int     ExcuteProc3(const char* sqlStr, double nReturn[]);


	int startTransaction();
	int commit();
	int rollback();
	std::string& getError();

	MYSQL* mysql();
private:
	MYSQL* mysql_;
	std::string StrError;
	bool query_;
	int m_close_log;
	
};
#endif //mysql_execute__
